home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / remove-shell < prev    next >
Text File  |  2009-02-16  |  749b  |  41 lines

  1. #!/bin/sh -e
  2.  
  3. if test $# -eq 0
  4. then
  5.     echo usage: $0 shellname '[shellname ...]' 1>&2
  6.     exit 1
  7. fi
  8.  
  9. file=/etc/shells
  10. # I want this to be GUARANTEED to be on the same filesystem as $file
  11. tmpfile=${file}.tmp
  12. otmpfile=${file}.tmp2
  13.  
  14. set -o noclobber
  15.  
  16. trap "rm -f $tmpfile $otmpfile" EXIT
  17.         
  18. if ! cat $file > $tmpfile
  19. then
  20.         cat 1>&2 <<EOF
  21. Either another instance of $0 is running, or it was previously interrupted.
  22. Please examine ${tmpfile} to see if it should be moved onto ${file}.
  23. EOF
  24.         exit 1
  25. fi
  26.  
  27. # this is supposed to be reliable, not pretty
  28. for i
  29. do
  30.     grep -v "^${i}$" $tmpfile > $otmpfile || true
  31.     mv $otmpfile $tmpfile
  32. done
  33.  
  34. chmod --reference=$file $tmpfile
  35. chown --reference=$file $tmpfile
  36.  
  37. mv $tmpfile $file
  38.  
  39. trap "" EXIT
  40. exit 0
  41.